return fr_ip ? true : false;
}
-static char *dhcpv4_msg_to_string(uint8_t reqmsg)
+static const char *dhcpv4_msg_to_string(uint8_t reqmsg)
{
- switch (reqmsg) {
- case (DHCPV4_MSG_DISCOVER):
- return "DHCPV4_MSG_DISCOVER";
- case (DHCPV4_MSG_OFFER):
- return "DHCPV4_MSG_OFFER";
- case (DHCPV4_MSG_REQUEST):
- return "DHCPV4_MSG_REQUEST";
- case (DHCPV4_MSG_DECLINE):
- return "DHCPV4_MSG_DECLINE";
- case (DHCPV4_MSG_ACK):
- return "DHCPV4_MSG_ACK";
- case (DHCPV4_MSG_NAK):
- return "DHCPV4_MSG_NAK";
- case (DHCPV4_MSG_RELEASE):
- return "DHCPV4_MSG_RELEASE";
- case (DHCPV4_MSG_INFORM):
- return "DHCPV4_MSG_INFORM";
- case (DHCPV4_MSG_FORCERENEW):
- return "DHCPV4_MSG_FORCERENEW";
- default:
+ static const char *dhcpv4_msg_names[] = {
+ [DHCPV4_MSG_DISCOVER] = "DHCPV4_MSG_DISCOVER",
+ [DHCPV4_MSG_OFFER] = "DHCPV4_MSG_OFFER",
+ [DHCPV4_MSG_REQUEST] = "DHCPV4_MSG_REQUEST",
+ [DHCPV4_MSG_DECLINE] = "DHCPV4_MSG_DECLINE",
+ [DHCPV4_MSG_ACK] = "DHCPV4_MSG_ACK",
+ [DHCPV4_MSG_NAK] = "DHCPV4_MSG_NAK",
+ [DHCPV4_MSG_RELEASE] = "DHCPV4_MSG_RELEASE",
+ [DHCPV4_MSG_INFORM] = "DHCPV4_MSG_INFORM",
+ [DHCPV4_MSG_FORCERENEW] = "DHCPV4_MSG_FORCERENEW",
+ [DHCPV4_MSG_LEASEQUERY] = "DHCPV4_MSG_LEASEQUERY",
+ [DHCPV4_MSG_LEASEUNASSIGNED] = "DHCPV4_MSG_LEASEUNASSIGNED",
+ [DHCPV4_MSG_LEASEUNKNOWN] = "DHCPV4_MSG_LEASEUNKNOWN",
+ [DHCPV4_MSG_LEASEACTIVE] = "DHCPV4_MSG_LEASEACTIVE",
+ [DHCPV4_MSG_BULKLEASEQUERY] = "DHCPV4_MSG_BULKLEASEQUERY",
+ [DHCPV4_MSG_LEASEQUERYDONE] = "DHCPV4_MSG_LEASEQUERYDONE",
+ [DHCPV4_MSG_ACTIVELEASEQUERY] = "DHCPV4_MSG_ACTIVELEASEQUERY",
+ [DHCPV4_MSG_LEASEQUERYSTATUS] = "DHCPV4_MSG_LEASEQUERYSTATUS",
+ [DHCPV4_MSG_TLS] = "DHCPV4_MSG_TLS",
+ };
+
+ if (reqmsg >= ARRAY_SIZE(dhcpv4_msg_names))
return "UNKNOWN";
- }
+ return dhcpv4_msg_names[reqmsg];
}
static void dhcpv4_put(struct dhcpv4_message *msg, uint8_t **cookie,
DHCPV4_BOOTREPLY = 2
};
+// https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml#message-type-53
enum dhcpv4_msg {
- DHCPV4_MSG_DISCOVER = 1,
- DHCPV4_MSG_OFFER = 2,
- DHCPV4_MSG_REQUEST = 3,
- DHCPV4_MSG_DECLINE = 4,
- DHCPV4_MSG_ACK = 5,
- DHCPV4_MSG_NAK = 6,
- DHCPV4_MSG_RELEASE = 7,
- DHCPV4_MSG_INFORM = 8,
- DHCPV4_MSG_FORCERENEW = 9,
+ DHCPV4_MSG_DISCOVER = 1, // RFC2132
+ DHCPV4_MSG_OFFER = 2, // RFC2132
+ DHCPV4_MSG_REQUEST = 3, // RFC2132
+ DHCPV4_MSG_DECLINE = 4, // RFC2132
+ DHCPV4_MSG_ACK = 5, // RFC2132
+ DHCPV4_MSG_NAK = 6, // RFC2132
+ DHCPV4_MSG_RELEASE = 7, // RFC2132
+ DHCPV4_MSG_INFORM = 8, // RFC2132
+ DHCPV4_MSG_FORCERENEW = 9, // RFC3203
+ DHCPV4_MSG_LEASEQUERY = 10, // RFC4388
+ DHCPV4_MSG_LEASEUNASSIGNED = 11, // RFC4388
+ DHCPV4_MSG_LEASEUNKNOWN = 12, // RFC4388
+ DHCPV4_MSG_LEASEACTIVE = 13, // RFC4388
+ DHCPV4_MSG_BULKLEASEQUERY = 14, // RFC6926
+ DHCPV4_MSG_LEASEQUERYDONE = 15, // RFC6926
+ DHCPV4_MSG_ACTIVELEASEQUERY = 16, // RFC7724
+ DHCPV4_MSG_LEASEQUERYSTATUS = 17, // RFC7724
+ DHCPV4_MSG_TLS = 18, // RFC7724
};
enum dhcpv4_opt {